"""
Обёртка над zxcvbn для проверки надёждности пароля.

Author: Milinuri Nirvalen
Ver: 1.1 (4)
"""

from chiori import Plugin
from libs.utils import sp

from zxcvbn import zxcvbn


p = Plugin(name='passcheck')

@p.command('password', 'пароль',
	usage='[password] [user inputs] проверить надёжность пароля')
async def checkPassword(event, ctx):
	res = zxcvbn(ctx.args[0], user_inputs=ctx.args[1:])
	times = res["crack_times_display"]
	fb = res["feedback"]

	text = f'''проверка вашего пароля:
длинна пароля: {len(ctx.args[0])}
вариантов пароля: {sp(round(res["guesses"]/10))}k
оценка: {"⭐"*res["schiori"]}
время обработки: {res["calc_time"]}

время на взлом:
-- [онлайн] 100/час: {times["online_throttling_100_per_hour"]}
-- [онлайн] 10/сек: {times["online_no_throttling_10_per_second"]}
-- [оффлайн] хеширование (4кк/сек): {times["offline_slow_hashing_1e4_per_second"]}
-- [оффлайн] хеширование (10кк/сек): {times["offline_fast_hashing_1e10_per_second"]}
'''

	for k, v in fb.items():
		if type(v) == list:
			for x in v:
				text += f'\n- {k}: {x}'
		elif v:
			text += f'\n- {k}: {v}'
	await ctx.message(text)
